(define set
  (native_function "
    Proc.new do |arguments, interpreter|
      if arguments.count != 3
        raise 'Set function requires 3 arguments!'
      else
        arg1 = interpreter.evaluate(arguments[0])
        if arg1.is_a?(Array) || arg1.is_a?(Hash)
          arg2 = interpreter.evaluate(arguments[1])
          arg3 = interpreter.evaluate(arguments[2])
          arg1[arg2] = arg3
        end 
      end
    end
  "))
